/**
 * var load = document.createElement("script"); load.src =
 * "http://api.map.baidu.com/api?v=3.0&ak=IDvNBsejl9oqMbPF316iKsXR&callback=map_init";
 * load.type = "text/javascript"; document.head.appendChild(load);
 */

function G(id) {
	return document.getElementById(id);
}
var bmap = {
		status : false,
		map : '',
		point : '',
		overlays : [],
		overlaysCache : [],
		myPolygon : '',
		flushIndex : 1,
		myOverlay : [],
		drawingManager : '',
		styleOptions : {
			strokeColor : "red", // 边线颜色。
			fillColor : "red", // 填充颜色。当参数为空时，圆形将没有填充效果。
			strokeWeight : 3, // 边线的宽度，以像素为单位。
			strokeOpacity : 0.8, // 边线透明度，取值范围0 - 1。
			fillOpacity : 0.3, // 填充的透明度，取值范围0 - 1。
			strokeStyle : 'solid' // 边线的样式，solid或dashed。
		},
		
		/**
		 * 实例化
		 * 
		 * 初始化地图id 是否需要绘制区域 是否需要定位 是否需要大小按钮 是否需要搜索按钮 视图中的定位点
		 */
		init : function(map_id,is_drawingManager,is_geolocationControl,is_NavigationControl,is_search,pointViews) 
		{
			if (this.status) 
			{
				return;
			}
			
			if(map_id == null){
				map_id = 'map';
			}
		    var pointsArray=$("#hidPoints").text().split(",")
		    var newarray = [];
		    if($("#hidPoints").text() != ""){
			    for(var i=0;i<pointsArray.length;i+=2)
			    {
			        newarray.push(new BMap.Point(pointsArray[i+1],pointsArray[i]));
			    } 
		    }
			this.myOverlay=newarray;
			this.viewport =this.myOverlay;
			
			this.status = true;
			this.map = new BMap.Map(map_id);
			var map = this.map;
			
//			优先定位点
			if(pointViews == undefined){
				this.point = new BMap.Point(104.098083,35.97756); // 定位到兰州，看到全国全貌
				map.centerAndZoom(this.point, 5);    // 地图的放大级别
			}else{
				map.setViewport(pointViews,this.styleOptions);
			}
			// map.centerAndZoom("兰州",5);
			
			var styleOptions = this.styleOptions;
			map.enableScrollWheelZoom();
			map.disableDoubleClickZoom();
			
			if(is_search){
				var ac = new BMap.Autocomplete(    // 建立一个自动完成的对象
						{"input" : "search","location" : map
						});
				ac.addEventListener("onhighlight", function(e) {  // 鼠标放在下拉列表上的事件
					var str = "";
					var _value = e.fromitem.value;
					var value = "";
					if (e.fromitem.index > -1) {
						value = _value.province +  _value.city +  _value.district +  _value.street +  _value.business;
					}    
					str = "FromItem<br />index = " + e.fromitem.index + "<br />value = " + value;
					
					value = "";
					if (e.toitem.index > -1) {
						_value = e.toitem.value;
						value = _value.province +  _value.city +  _value.district +  _value.street +  _value.business;
					}    
					str += "<br />ToItem<br />index = " + e.toitem.index + "<br />value = " + value;
					G("searchResultPanel").innerHTML = str;
				});
				
				var myValue;
				ac.addEventListener("onconfirm", function(e) {    // 鼠标点击下拉列表后的事件
					var _value = e.item.value;
					myValue = _value.province +  _value.city +  _value.district +  _value.street +  _value.business;
					G("searchResultPanel").innerHTML ="onconfirm<br />index = " + e.item.index + "<br />myValue = " + myValue;
					
					setPlace();
				});
				
				function setPlace(){
					map.clearOverlays();    // 清除地图上所有覆盖物
					function myFun(){
						var pp = local.getResults().getPoi(0).point;    // 获取第一个智能搜索的结果
						map.centerAndZoom(pp, 18);
						map.addOverlay(new BMap.Marker(pp));    // 添加标注
					}
					
					var local = new BMap.LocalSearch(map, { // 智能搜索
						onSearchComplete: myFun
					});
					local.search(myValue);
					
				}
			}
			
			
				// 添加定位控件
			if(is_geolocationControl){
				var geolocationControl = new BMap.GeolocationControl({anchor: BMAP_ANCHOR_BOTTOM_RIGHT,offset:new BMap.Size(5, 55)});
				map.addControl(geolocationControl);
			}
			
			// 是否显示地图显示类型
//			if(is_mapType){
//// var mapType = new BMap.MapTypeControl({anchor: BMAP_ANCHOR_TOP_RIGHT});
//				var mapType = new BMap.MapTypeControl({mapTypes: [BMAP_NORMAL_MAP,BMAP_HYBRID_MAP]});
//				map.addControl(mapType);  
//			}
			 
			
			// 比例尺
			if(is_NavigationControl){
				// var top_left_control = new BMap.ScaleControl({anchor:
				// BMAP_ANCHOR_TOP_LEFT});// 左上角，添加比例尺
				// var top_left_navigation = new BMap.NavigationControl();
				// //左上角，添加默认缩放平移控件
				var top_right_navigation = new BMap.NavigationControl({anchor: BMAP_ANCHOR_BOTTOM_RIGHT, type: BMAP_NAVIGATION_CONTROL_ZOOM}); // 右上角，仅包含平移和缩放按钮
				/*
				 * 缩放控件type有四种类型: BMAP_ANCHOR_BOTTOM_RIGHT
				 * BMAP_NAVIGATION_CONTROL_SMALL：仅包含平移和缩放按钮；BMAP_NAVIGATION_CONTROL_PAN:仅包含平移按钮；BMAP_NAVIGATION_CONTROL_ZOOM：仅包含缩放按钮
				 */
				
				// 添加控件和比例尺
				// map.addControl(top_left_control);
				// map.addControl(top_left_navigation);
				map.addControl(top_right_navigation);   
				
			}
			
			// 实例化鼠标绘制工具
			if(is_drawingManager){
				this.drawingManager = new BMapLib.DrawingManager(map, {
					isOpen : false, // 是否开启绘制模式
					enableDrawingTool : true, // 是否显示工具栏
					drawingToolOptions : {
						anchor : BMAP_ANCHOR_TOP_RIGHT, // 位置
// offset : new BMap.Size(-21, 45), //偏离值 有圆情况
						offset : new BMap.Size(-14, 45), // 偏离值 没有圆的情况
						scale : 0.8,  // 工具栏缩放比例
						drawingModes:
							[
							 BMAP_DRAWING_POLYGON ,
							 BMAP_DRAWING_RECTANGLE ,
							  BMAP_DRAWING_CIRCLE
							 ]
					},
					polygonOptions : styleOptions, // 多边形的样式
					rectangleOptions : styleOptions, // 矩形样式
					circleOptions : styleOptions //圆形样式
				});
				// 添加鼠标绘制工具监听事件，用于获取绘制结果
				this.drawingManager.addEventListener('overlaycomplete',
						bmap.overlaycomplete);
				
				// 对圆的监控
// this.drawingManager.addEventListener("circlecomplete",function(overlay) {
// var circle_radius=overlay.getRadius();
// var lng = overlay.getCenter().lng;
// var lat = overlay.getCenter().lat;
// // var circle_point=new BMap.Point(lng,lat);
// $("#radius").val(circle_radius);
// $("#longitude").val(lng);
// $("#latitude").val(lat);
// $("#type option[value='0']").attr("selected","selected");
// });
			}
			
			/* 加载一个已有的多边形 */
			if (this.myOverlay) {
				this.loadMyOverlay();
			}
			
// /**地图加载完成之后触发*/
// map.addEventListener("tilesloaded",function(){
// //初始化圆
// var point = new BMap.Point(116.404, 39.915);
// //var c = new BMap.Circle(point,101.59,bmap.styleOptions);
// var c = new BMap.Circle(point,500,{strokeColor:"blue", strokeWeight:2,
// strokeOpacity:0.5}); //创建圆
// bmap.map.addOverlay(c);
// bmap.map.centerAndZoom(point, 13);
// });
			
		},
		loadMyOverlay : function() {
			var map = this.map;
// this.clearAll();
			// map.centerAndZoom(this.point, 13);
			
			if(bmap.flushIndex == 1 && $("#radius").val() != "" 
				&& $("#radius").val() != undefined){
					// 初始化圆
					var point = new BMap.Point($("#longitude").val(), $("#latitude").val());
					var circle = new BMap.Circle(point,$("#radius").val(),bmap.styleOptions);
					map.addOverlay(circle);
// this.myPolygon = circle;
// map.centerAndZoom(point, 13);
					try {
						circle.enableEditing();    // 设置点可编辑
					} catch (e) {
					}
					// myPolygon地图加载出来的 覆盖物的属性发生变化时触发 刚加载地图的时候就已经有区域了
					// 随便移动(区域属性变化)则立即获取坐标
					circle.addEventListener("lineupdate", function(e) {  
						bmap.showLatLon(e.currentTarget);
					});
					
					var pointsArray=$("#hidPoints").text().split(",")
				    var newarray = [];
				    if($("#hidPoints").text() != ""){
					    for(var i=0;i<pointsArray.length;i+=2)
					    {
					        newarray.push(new BMap.Point(pointsArray[i+1],pointsArray[i]));
					    } 
				    }
					map.setViewport([circle.getBounds().getSouthWest(),circle.getBounds().getNorthEast()]);
					
			}else{
				myPolygon = new BMap.Polygon(this.myOverlay, this.styleOptions);
				map.addOverlay(myPolygon);
				this.myPolygon = myPolygon;
				try {
					myPolygon.enableEditing();    // 设置点可编辑
				} catch (e) {
				}
				// myPolygon地图加载出来的 覆盖物的属性发生变化时触发 刚加载地图的时候就已经有区域了
				// 随便移动(区域属性变化)则立即获取坐标
				myPolygon.addEventListener("lineupdate", function(e) {  
					bmap.showLatLon(e.currentTarget);
				});
				map.setViewport(this.myOverlay);
			}
			bmap.flushIndex++;
		},
		showLatLon : function(e) {
			var a = e.getPath();
			var len = a.length;
			var s = '';
			var arr = [];
			for ( var i = 0; i < len; i++) {
				arr.push([ a[i].lat ,  a[i].lng]);
			}
			this.overlaysCache = arr;
//            $("#hidPoints").val(arr);
            
          // 对圆的特殊操作
			try{
				var circle_radius=e.getRadius().toFixed(6);  
				var lng = e.getCenter().lng;
				var lat = e.getCenter().lat;
	            $("#radius").val(circle_radius);
	            $("#longitude").val(lng);
	            $("#latitude").val(lat);
	            $("#type option[value='0']").attr("selected","selected");
	            $("#hidPoints").val('');
			}catch(e){
				$("#radius").val('');
	            $("#longitude").val('');
	            $("#latitude").val('');
	            $("#hidPoints").val(arr);
				$("#type option[value='1']").attr("selected","selected");
			}
			
		},
		/**
		 * 回调获得覆盖物信息
		 */
		overlaycomplete : function(e) {
			bmap.overlays.push(e.overlay);
			e.overlay.enableEditing();
			
			 // 为新画上去的覆盖物添加监听事件（新画的覆盖物属性发生变化时执行，比如拖拉等操作）
			e.overlay.addEventListener("lineupdate", function(e) { 
				bmap.showLatLon(e.currentTarget);
			}); 
			
			var array = e.overlay.getPath();
		    var arr=new Array();
			for(var i = 0;i<array.length;i++)
			{
			   arr.push([array[i].lat+","+array[i].lng]);
			}
			// this.overlaysCache = arr;
//			$("#hidPoints").val(arr);
			try{
				var circle_radius=e.overlay.getRadius().toFixed(6);  
				var lng = e.overlay.getCenter().lng;
				var lat = e.overlay.getCenter().lat;
// var circle_point=new BMap.Point(lng,lat);
	            $("#radius").val(circle_radius);
	            $("#longitude").val(lng);
	            $("#latitude").val(lat);
	            $("#type option[value='0']").attr("selected","selected");
			}catch(e){
				$("#radius").val('');
	            $("#longitude").val('');
	            $("#latitude").val('');
				$("#type option[value='1']").attr("selected","selected");
				$("#hidPoints").val(arr);
			}
		},
		/**
		 * 清除覆盖物
		 */
		clearAll : function() {
			var map = this.map;
			var overlays = this.overlays;
			for ( var i = 0; i < overlays.length; i++) {
				map.removeOverlay(overlays[i]);
			}
			this.overlays.length = 0;
			map.removeOverlay(this.myPolygon);
			this.myPolygon = '';
			$("#hidPoints").val('');  // 把隐藏围栏经纬度的载体清空 当清空完点击保存的时候就会提示
										// 没有画区域，不让保存。。
			$("#radius").val('');
            $("#longitude").val('');
            $("#latitude").val('');
		},
		/**
		 * 取覆盖物的经纬度
		 */
		getOverLay : function() {
			var box = this.myPolygon ? this.myPolygon
					: this.overlays[this.overlays.length - 1];
			console.log(box.W);
		},
		getCount : function() {
			var n = 0;
			if (this.myPolygon) {
				n++;
			}
			;
			if (this.overlays) {
				n = n + this.overlays.length;
			}
			;
			console.log(n);
		},
		// 改变地图类型 BMAP_HYBRID_MAP: 混合地图,BMAP_NORMAL_MAP: 普通地图
		changeMapType : function(type){
			this.map.setMapType(type);
		},
		/** 测距 */
		opanRanging : function(){
			var myDis = new BMapLib.DistanceTool(this.map);
			myDis.open();  // 开启鼠标测距
			// myDis.close(); //关闭鼠标测距
		}
	};

/** 搜索按钮 */
function search_key(){
	var local = new BMap.LocalSearch(bmap.map, {
		renderOptions:{map: bmap.map}
	});
	local.search($("#search").val());
}

// 标记当前
$(".ui3-control-wrap i").live("click", function() {
	$(".ui3-control-wrap i").attr("style","");
	$(this).attr("style","color: #579AFC");
});

$().ready(function(){
	
//	var script = document.createElement('script');
//	 script.setAttribute("type", "text/javascript");
//	 script.setAttribute("src", 'http://api.map.baidu.com/library/GeoUtils/1.2/src/GeoUtils_min.js');
//	 document.body.appendChild(script);
	 
	 
	
	$(".ui3-control-wrap .left").css("right",$(window).width() * 1.186/100);
	
	$(".ui3-control-wrap .map").on('mouseover',function(e){ 
	  	$(".ui3-control-wrap .hidden-box-map").css("display","inline-block");
	 });
	
	$(".ui3-control-wrap .map").on('mouseout',function(e){ 
		  	$(".ui3-control-wrap .hidden-box-map").css("display","none");
	 });
	
	$(".ui3-control-wrap .tool").on('mouseover',function(e){ 
	  	$(".ui3-control-wrap .hidden-box-tool").css("display","inline-block");
	 });
	
	$(".ui3-control-wrap .tool").on('mouseout',function(e){ 
		  	$(".ui3-control-wrap .hidden-box-tool").css("display","none");
	 });
});



